JavaScript Let
letকীওয়ার্ডটি ES6 (2015) এ চালু করা হয়েছিল।
letসঙ্গে ঘোষিত ভেরিয়েবল ব্লক সুযোগ আছেletসাথে ঘোষিত ভেরিয়েবল অবশ্যই ব্যবহারের আগে ঘোষণা করতে হবেletসাথে ঘোষিত ভেরিয়েবল একই সুযোগে পুনরায় ঘোষণা করা যাবে নাBlock Scope
ES6 (2015) এর আগে, জাভাস্ক্রিপ্টের ব্লক স্কোপ ছিল না।
জাভাস্ক্রিপ্টের শুধুমাত্র গ্লোবাল স্কোপ এবং ফাংশন স্কোপ ছিল।
ES6 দুটি নতুন জাভাস্ক্রিপ্ট কীওয়ার্ড প্রবর্তন করেছে:letএবংconst.
এই দুটি কীওয়ার্ড জাভাস্ক্রিপ্টে ব্লক স্কোপ প্রদান করে:
Example: Block Scope with let
{
let x = 2;
}
// x can NOT be used here (outside the block)
Global Scope vs Block Scope
var - No Block Scope
{
var x = 2;
}
// x CAN be used here (outside the block)
varসাথে ঘোষিত ভেরিয়েবলের সর্বদা বিশ্বব্যাপী সুযোগ থাকে।
let - Has Block Scope
{
let x = 2;
}
// x can NOT be used here (outside the block)
letসঙ্গে ঘোষিত ভেরিয়েবল ব্লক সুযোগ আছে.
Cannot be Redeclared
letসাথে সংজ্ঞায়িত ভেরিয়েবল পুনরায় ঘোষণা করা যাবে না।
আপনি ঘটনাক্রমেletসাথে ঘোষিত একটি পরিবর্তনশীল পুনরায় ঘোষণা করা যাবে না।
Example: Cannot Redeclare let
let x = "John Doe";
let x = 0; // ❌ Error: Identifier 'x' has already been declared
Example: Can Redeclare var
var x = "John Doe";
var x = 0; // ✅ Allowed
Redeclaring Variables
varকীওয়ার্ড ব্যবহার করে একটি ভেরিয়েবল পুনরায় ঘোষণা করলে সমস্যা হতে পারে।
Example: Problem with var redeclaration
var x = 10;
// Here x is 10
{
var x = 2;
// Here x is 2
}
// Here x is 2 (unexpected!)
var সমস্যা:
একটি ব্লকের ভিতরে একটি ভেরিয়েবল পুনরায় ঘোষণা করা ব্লকের বাইরের পরিবর্তনশীলটিকে পুনরায় ঘোষণা করে।
letকীওয়ার্ড ব্যবহার করে একটি ভেরিয়েবল পুনরায় ঘোষণা করা এই সমস্যার সমাধান করে।
Example: Solution with let
let x = 10;
// Here x is 10
{
let x = 2;
// Here x is 2
}
// Here x is 10 (as expected!)
Difference Between var, let and const
| Feature | var | let | const |
|---|---|---|---|
| Scope | No Block Scope | Block Scope | Block Scope |
| Redeclare | Yes | No | No |
| Reassign | Yes | Yes | No |
| Hoisted | Yes | No | No |
| Binds this | Yes | No | No |
What is Good?
letএবংconstব্লক সুযোগ রয়েছেletএবংconstপুনরায় ঘোষণা করা যাবে নাletএবংconstব্যবহারের আগে অবহিত করা আবশ্যকletএবংconst thisসাথে আবদ্ধ হয় নাletএবংconstউত্তোলন করা হয় নাWhat is Not Good?
varঘোষণা করার প্রয়োজন নেই (ডিফল্ট বিশ্বব্যাপী)varউত্তোলন করা হয়েছে (বিজ্ঞপ্তির আগে ব্যবহার করা যেতে পারে)var thisসাথে আবদ্ধ হয়সর্বোত্তম অনুশীলন:
আধুনিক জাভাস্ক্রিপ্ট প্রোগ্রামিং, সবসময়varএর পরিবর্তেletবাconstএটি ব্যবহার করুন ত্রুটি প্রতিরোধ করতে সাহায্য করে।
Browser Support
letএবংconstইন্টারনেট এক্সপ্লোরার 11 বা পূর্ববর্তী সংস্করণে কীওয়ার্ড সমর্থিত নয়।
| Browser | Version | Release Date |
|---|---|---|
| Chrome | 49 | Mar, 2016 |
| Edge | 12 | Jul, 2015 |
| Firefox | 36 | Jan, 2015 |
| Safari | 11 | Sep, 2017 |
| Opera | 36 | Mar, 2016 |
Redeclaring Rules
varএকটি জাভাস্ক্রিপ্ট ভেরিয়েবলের সাথে পুনঃঘোষণা একটি প্রোগ্রামের যেকোনো জায়গায় অনুমোদিত:
Example: Allowed with var
var x = 2; // Now x is 2
var x = 3; // Now x is 3 (redeclared)
letএছাড়াও, একই মডিউলে একটি পরিবর্তনশীল পুনরায় ঘোষণা করা অনুমোদিত নয়:
Example: Not Allowed with let
let x = 2; // Allowed
let x = 3; // ❌ Not allowed
{
let x = 2; // Allowed
let x = 3; // ❌ Not allowed
}
{
let x = 2; // Allowed
var x = 3; // ❌ Not allowed
}
অন্য ব্লকেletএকটি পরিবর্তনশীল পুনঃঘোষণা এর সাথে অনুমোদিত:
Example: Allowed in Different Blocks
let x = 2; // Allowed
{
let x = 3; // Allowed (different block)
}
{
let x = 4; // Allowed (different block)
}
Let Hoisting
varএর সাথে সংজ্ঞায়িত ভেরিয়েবলগুলি উপরে উত্তোলন করা হয়েছে এবং যে কোনো সময় আরম্ভ করা যেতে পারে।
Example: var Hoisting
carName = "Volvo";
var carName; // ✅ Allowed (hoisted)
শেখা:
Hoisting সম্পর্কে আরও জানতে, JavaScript Hoisting অধ্যায় পড়ুন।
letএর সাথে সংজ্ঞায়িত ভেরিয়েবলগুলি ব্লকের উপরে উত্তোলন করা হয়, তবে আরম্ভ করা হয় না।
Example: let Hoisting (Temporal Dead Zone)
carName = "Saab"; // ❌ ReferenceError
let carName = "Volvo";
Temporal Dead Zone:
letভেরিয়েবলগুলি উত্তোলন করা হয়, কিন্তু "টেম্পোরাল ডেড জোন"-এ থাকে। ঘোষণার আগে এগুলি ব্যবহার করার চেষ্টা করা একটি রেফারেন্স ত্রুটির কারণ হবে৷